AWS CLI 1.9.0がリリースされました
AWS のコマンドラインツール CLI 1.9.0 がリリースされたので、更新内容をさらっと紹介したいと思います。
リリースノート https://aws.amazon.com/releasenotes/CLI/3617378217059595
AWS IAM のポリシーシミュレーターがリソースベース権限に対応しました。
AWS CLI もこの機能に追従しました。
詳細は次の URL をご確認ください。
AWS Auto Scaling が暗号化された EBS にも対応しました
AWS CLI もこの機能に追従しました。
詳細は次の URL をご確認ください。
Create Auto Scaling launch configurations that include encrypted EBS volumes
証明書バンドルを設定ファイル・コマンドラインから指定できるようになりました
証明書バンドルをカスタマイズしたい時、従来は環境変数 AWS_CA_BUNDLE でのみ指定可能でした。
今回のリリースに伴い、
- 設定ファイル(~/.aws.config)
- コマンドラインオプション(--ca-bundle)
でも指定できるようになりました。
プルリクエスト : https://github.com/aws/aws-cli/pull/1379
$ aws configure set ca_bundle /usr/share/ssl/certs/ca-bundle.crt --profile hoge
のようにすると、~/.aws/config
では
[profile hoge] output = json region = ap-northeast-1 ca_bundle = /etc/foo/bar/ca-bundle
というように項目 ca_bundle
が追加されます。
もちろん、直接 ~/.aws/config
ファイルを編集してもよいです。
証明書オプションはより上にあるものが優先されます。
--no-verify-ssl
(コマンドライン)--ca-bundle
(コマンドライン)- 環境変数(AWS_CA_BUNDLE)
- 設定ファイル(ca_bundle)
curl の --cacert
や CURL_CA_BUNDLE
相当の機能です。
assume role で RoleSessionName を指定できるようになりました
AWS IAM には他アカウントに対してロールを介して一次的にAPI操作できる機能があります。
[target1] # 333344445555 role_arn = arn:aws:iam::333344445555:role/target1-role source_profile = foo
のように ~/.aws/credentials ファイルにかくと foo アカウントから 333344445555 アカウントの target1-role ロールを操作できます。
AWS の API では
- 相手のアカウント
- ロール名
- ロールセッション名
をキーに、一時クレデンシャルを払い出す仕様ですが、AWS CLI は内部的にロールセション名にタイムスタンプを使っていたため、RoleSessionName を予測出来ませんでした。
今回の改修で RoleSessionName を指定できるようになったため、CLI からの操作に対してサーバーサイドから細かく権限管理できるようになりました。
プルリクエスト https://github.com/aws/aws-cli/pull/1389
たとえば
"Effect": "Deny", "NotPrincipal": {"AWS": [ "arn:aws:sts::333344445555:assumed-role/target1-role/session1-role", "arn:aws:iam::333344445555:role/target1-role" ]}
というようなポリシーが適用されたリソースを CLI から操作するには
[target1] # 333344445555 role_arn = arn:aws:iam::333344445555:role/target1-role source_profile = foo role_session_name = session1-role
というように RoleSessionName を名乗らないといけません。
設定ファイル ~/.aws/credentials の role_session_name はオプション扱いのため、定義されていなければ、従来通りタイムスタンプが使われます。
バージョン表記が変わりました。
$ aws --version
の結果や AWS CLI のリクエストヘッダーの User-Agent に botocore(AWS CLI の低レイヤーライブラリ) のバージョンも含まれるようになりました。
$ aws --version aws-cli/1.9.0 Python/2.7.10 Darwin/14.5.0 botocore/1.3.0
AWS のサーバーサイドエンジニアはデバッグが少し楽になったのではないでしょうか?
プルリクエスト https://github.com/aws/aws-cli/pull/1554